data_jan = read.dta13('14_01_Jan_2014_dta.dta')
data_may = read.dta13("14_05_May_2014_dta.dta")To set the scene Eight years before the Russian full-scale invasion into Ukraine, on February 27th of 2014, Vladimir Putin illegally annexed the Ukrainian peninsula of Crimea. His approval ratings soared. I will undertake the task to breakdown and analyze the proposed data of approval ratings accumulated from January 2014 and May 2014 to validate or reject the initial hypothesis, and posit my own hypothesis
It is proposed in the first hypothesis that the propaganda news has influence over Putin’s Approval. Such propaganda would promote animosity towards the west and in particular Western sanctions imposed against Russia would lead people to view Crimea’s annexation as a blow against their oppressors. I propose two hypotheses first that independent variables such as income, age education, marital status would have an affect on Putin’s Approval. My second hypothesis is that occupation would have a substantial affect Putin’s Approval
Below is a motivating chart comparing Putin’s approval from the January 2014 data set to the May 2014 data set based on the political news count.
## Needs more work
jan_apprv = data_jan %>% group_by(pol_news_count) %>% summarize(
mean(putinapprov, na.rm = T)
)
#
may_apprv = data_may %>% group_by(pol_news_count) %>% summarize(
mean(putinapprov, na.rm = T)
)
#
colnames(jan_apprv) = c("pol_news_count", "approval")
p_jan_news =
ggplot(data = jan_apprv, aes(pol_news_count, approval)) +
geom_col(width = 0.5, fill="maroon") +
xlab("Political News Count") +
ylab("Putin Approval") +
labs(title = "Jan Approval", subtitle = "From Political News Count") +
theme_minimal()+
ylim(0,1) +
xlim(0, 15)
colnames(may_apprv) = c("pol_news_count", "approval")
p_may_news = ggplot(data = may_apprv, aes(pol_news_count, approval)) +
geom_col(width = 0.5, fill="maroon") +
xlab("Political News Count") +
ylab("Putin Approval") +
labs(title = "May Approval", subtitle = "From Political News Count") +
theme_minimal()+
ylim(0,1) +
xlim(0, 15)
# scale_x_discrete(limits = c("2", "dgfd", "sds", "ss"))
grid.arrange(p_jan_news, p_may_news, nrow = 1)
From both plots, it can be seen that although Putin’s approval does increase the general number of political events remembered, it does not stray too far to create such a significant increase in Putin’s approval. Suggesting that Crimea’s annexation definitely had an impact on how Russian citizens viewed Putin
## Political news count and non-political news count
## Make regressions
## make plots
#
m1 = lm(data = data_jan, putinapprov ~ pol_news_count + non_pol_news_count)
m2 = lm(data = data_may, putinapprov ~ pol_news_count + non_pol_news_count)
stargazer(m1, m2, type = 'html', header = F,
column.labels = c("\\textit{Jan}", "\\textit{May}"),
model.names = FALSE,
dep.var.labels = c("Putin Approval"),
covariate.labels = c("Political news", "None Political News"))| Dependent variable: | ||
| Putin Approval | ||
| Jan | May | |
| (1) | (2) | |
| Political news | -0.028** | 0.004 |
| (0.011) | (0.005) | |
| None Political News | 0.046*** | 0.006 |
| (0.010) | (0.007) | |
| Constant | 0.663*** | 0.843*** |
| (0.019) | (0.014) | |
| Observations | 1,584 | 1,587 |
| R2 | 0.014 | 0.002 |
| Adjusted R2 | 0.013 | 0.001 |
| Residual Std. Error | 0.465 (df = 1581) | 0.346 (df = 1584) |
| F Statistic | 11.025*** (df = 2; 1581) | 1.402 (df = 2; 1584) |
| Note: | p<0.1; p<0.05; p<0.01 | |
# omit.stat = c("f", "rse"))
This is especially noticeable when looking at the regression of the number of political events remembered and non-political events. As in January, the Russian citizen’s interaction with political news had statistical significance, showing a negative impact on his approval, and vice versa when they did not interact with political news, showing positive results on Putin’s approval. However, such variables no longer remain statistically significant. Consequently, the annexation of Crimea may have been viewed as a blow against their western oppressors, who had been imposing sanctions on them for years, or that further territorial expansion would benefit Russia as a whole.
Below is a motivating chart comparing Putin’s approval from the January 2014 data set to the May 2014 data set based on the three separate levels of SES.
#Numbers for plot Jan
# mean(data_jan$putinapprov, na.rm = T)
Jan_econ = c(mean(subset(data_jan, econ_group1 == 1 | econ_group2 == 1)$putinapprov, na.rm = T), mean(subset(data_jan, econ_group3 == 1 | econ_group4 == 1)$putinapprov, na.rm = T), mean(subset(data_jan, econ_group5 == 1 | econ_group6 == 1)$putinapprov, na.rm = T))
# Number for plot May
# mean(data_may$putinapprov, na.rm = T)
may_econ = c(mean(subset(data_may, econ_group1 == 1 | econ_group2 == 1)$putinapprov, na.rm = T), mean(subset(data_may, econ_group3 == 1 | econ_group4 == 1)$putinapprov, na.rm = T), mean(subset(data_may, econ_group5 == 1 | econ_group6 == 1)$putinapprov, na.rm = T))
econ_groups = c("low", "medium", "high")
econ_groups_2 = c(1, 2, 3)
temp = cbind(Jan_econ, may_econ, econ_groups, econ_groups_2)
temp = as.data.frame(temp)
temp$may_econ = as.numeric(temp$may_econ)
temp$Jan_econ = as.numeric(temp$Jan_econ)
temp$econ_groups_2 = as.numeric(temp$econ_groups_2)
#temp$may_econ = as.numeric(temp$may_econ)
grid.arrange(
ggplot(data = temp, aes(x = econ_groups_2, y = Jan_econ)) +
geom_col(width = 0.5, fill="maroon") +
xlab("Socioeconmic Standing (SES)") +
ylab("Putin Approval from ") +
labs(title = "June Approval", subtitle = "From SES") +
scale_x_discrete(limits = c("Low SES ", "Middle SES", "High SES")) +
ylim(0, 1) +
theme_minimal(),
ggplot(data = temp, aes(x = econ_groups_2, y = may_econ)) +
geom_col(width = 0.5, fill="maroon") +
xlab("Socioeconmic Standing (SES)") +
ylab("Putin Approval") +
labs(title = "May Approval", subtitle = "From SES") +
scale_x_discrete(limits = c("Low SES ", "Middle SES", "High SES")) +
ylim(0, 1) +
theme_minimal(),
nrow = 1)
From both plots, it can be seen that the general wealth of the Russian people does increase across the board, and with that, Putin’s approval ratings. Leading to the observation that Crimea’s annexation is a contributing factor in Putin’s approval ratings.
model1 = lm(data = data_jan, putinapprov ~ I(income/10000) + age
+ college + univ + int_news + married + not_rgstrd)
model2 = lm(data = data_may, putinapprov ~ I(income/10000)+ age
+ college + univ + int_news + married + not_rgstrd)
stargazer(model1,model2, type = 'html', header = F,
column.labels = c("\\textit{Jan}", "\\textit{May}"),
model.names = FALSE,
dep.var.labels = c("Putin Approval"),
covariate.labels = c("Income","Age", "College Degree",
"University Degree",
"Online News","Married",
"Single"))| Dependent variable: | ||
| Putin Approval | ||
| Jan | May | |
| (1) | (2) | |
| Income | 0.018*** | -0.002 |
| (0.006) | (0.004) | |
| Age | 0.001 | -0.0004 |
| (0.001) | (0.001) | |
| College Degree | 0.027 | 0.012 |
| (0.031) | (0.023) | |
| University Degree | 0.022 | 0.017 |
| (0.035) | (0.025) | |
| Online News | -0.013 | -0.012 |
| (0.032) | (0.022) | |
| Married | -0.019 | -0.002 |
| (0.029) | (0.021) | |
| Single | -0.073 | -0.073 |
| (0.058) | (0.046) | |
| Constant | 0.590*** | 0.888*** |
| (0.053) | (0.041) | |
| Observations | 1,302 | 1,279 |
| R2 | 0.008 | 0.003 |
| Adjusted R2 | 0.003 | -0.003 |
| Residual Std. Error | 0.468 (df = 1294) | 0.342 (df = 1271) |
| F Statistic | 1.575 (df = 7; 1294) | 0.515 (df = 7; 1271) |
| Note: | p<0.1; p<0.05; p<0.01 | |
# Explain each variable as statistically significant or not
# Substantive interpretation if income goes by this much dependent goes up by this much
# This hypothesis found they are not statistically significant so there is no evidence to support those hypothesis's
# In may income did not matter due to citizens loving putin
#
Based on the regressions of the independent variables income (divided by 10,000), age, education, and marital status against Putin’s approval, all variables in the January data set were not statistically significant besides income. As in the January data set, whether or not a Russian citizen was of higher or lower socioeconomic status had an effect on whether or not they supported Putin. The same cannot be said in the May data set as income transitions to no longer being statistically significant, meaning that the annexation of Crimea likely had an impact on the citizens as Putin’s proactive political movement made it so the citizens’ socioeconomic status no longer played a role.
Below is a heat map of Putin’s approval from the January 2014 data set based on 7 economic groups (scale of 0-6, 0 is the lowest and 6 is the highest) and 11 occupations.
# Need to group_by all occupations for map
combo <-
data_jan %>% group_by(occup, econ_group) %>% summarise(
approv = mean(putinapprov, na.rm = T)
)
combos2 <- spread(combo, key = occup, value = approv)
economic_group = combos2$econ_group
combos2 = combos2[ , -1]
combos2 = as.matrix(combos2)
row.names(combos2) = economic_group
combos2[is.na(combos2)] <- 0
row.names(combos2) = c("Group 0", "Group 1", "Group 2", "Group 3", "Group 4","Group 5","Group 6")
colnames(combos2) = c("Entrepreneur","Manager", "Specialist",
"Military Worker", "Minimum Wage Worker",
"Manual Worker ", "Student", "Retired (Age)",
"Retired (Disability)", "Housewife", "Unemployed")
p <- plot_ly(x=colnames(combos2), y=rownames(combos2), z = combos2, type = "heatmap",
colors = 'Blues',
hovertemplate = paste('<i>Economic_group</i>: %{y}',
'<br><b>Occupation</b>: %{x}<br>',
'<br><br><b><b>Putin approval</b>: %{z}</b>',
'<b></b><extra></extra>')) %>%
layout(margin = list(l=120))
p
Below is a heat map of Putin’s approval from the May 2014 data set based on 7 economic groups (scale of 0-6, 0 is the lowest and 6 is the highest) and 11 occupations.
# Need to group_by all occupations for map
combo <-
data_may %>% group_by(occup, econ_group) %>% summarise(
approv = mean(putinapprov, na.rm = T)
)
combos2 <- spread(combo, key = occup, value = approv)
economic_group = combos2$econ_group
combos2 = combos2[ , -1]
combos2 = as.matrix(combos2)
row.names(combos2) = economic_group
combos2[is.na(combos2)] <- 0
row.names(combos2) = c("Group 0", "Group 1", "Group 2", "Group 3", "Group 4","Group 5","Group 6")
colnames(combos2) = c("Entrepreneur","Manager", "Specialist",
"Military Worker", "Minimum Wage Worker",
"Manual Worker ", "Student", "Retired (Age)",
"Retired (Disability)", "Housewife", "Unemployed")
p <- plot_ly(x=colnames(combos2), y=rownames(combos2), z = combos2, type = "heatmap",
colors = 'Blues',
hovertemplate = paste('<i>Economic_group</i>: %{y}',
'<br><b>Occupation</b>: %{x}<br>',
'<br><br><b><b>Putin approval</b>: %{z}</b>',
'<b></b><extra></extra>')) %>%
layout(margin = list(l=120))
p
When comparing both the January and May heat maps, it can be observed that Putin’s approval ratings generously increase across the board. Especially with people in managerial positions. However, what comes as a shock is that Putin’s approval ratings fluctuate when it comes to entrepreneurs in May, which leads to the assumption that after Crimea’s annexation, Russian entrepreneurs likely received more sanctions, causing distaste towards Putin.
m_1 = lm(data = data_jan, putinapprov ~ d_occup1 + d_occup2
+ d_occup3 + d_occup4 + d_occup5 + d_occup6 + d_occup7 +
d_occup8 + d_occup9 + d_occup10) #How to add unemployed
m_2 = lm(data = data_may, putinapprov ~ d_occup1 + d_occup2
+ d_occup3 + d_occup4 + d_occup5 + d_occup6 + d_occup7 +
d_occup8 + d_occup9 + d_occup10)
stargazer(m_1, m_2, type = 'html', header = F,
column.labels = c("\\textit{Jan}", "\\textit{May}"),
model.names = FALSE,
dep.var.labels = c("Putin Approval"),
covariate.labels = c("Entrepreneur","Manager", "Specialist",
"Military Worker",
"Minimum Wage Worker","Manual Worker ",
"Student", "Retired (Age)",
"Retired (Disability)", "Housewife"))| Dependent variable: | ||
| Putin Approval | ||
| Jan | May | |
| (1) | (2) | |
| Entrepreneur | -0.026 | -0.187*** |
| (0.091) | (0.069) | |
| Manager | 0.023 | -0.035 |
| (0.090) | (0.064) | |
| Specialist | 0.107 | 0.009 |
| (0.072) | (0.055) | |
| Military Worker | 0.055 | -0.058 |
| (0.106) | (0.083) | |
| Minimum Wage Worker | 0.082 | 0.009 |
| (0.075) | (0.055) | |
| Manual Worker | -0.007 | -0.029 |
| (0.071) | (0.053) | |
| Student | 0.173** | 0.063 |
| (0.086) | (0.067) | |
| Retired (Age) | 0.054 | -0.008 |
| (0.072) | (0.054) | |
| Retired (Disability) | -0.059 | 0.042 |
| (0.087) | (0.065) | |
| Housewife | 0.013 | -0.022 |
| (0.085) | (0.062) | |
| Constant | 0.633*** | 0.872*** |
| (0.067) | (0.050) | |
| Observations | 1,584 | 1,587 |
| R2 | 0.014 | 0.014 |
| Adjusted R2 | 0.008 | 0.008 |
| Residual Std. Error | 0.466 (df = 1573) | 0.345 (df = 1576) |
| F Statistic | 2.231** (df = 10; 1573) | 2.231** (df = 10; 1576) |
| Note: | p<0.1; p<0.05; p<0.01 | |
Although in the January data set, all types of occupations (compared to the unemployed Russian citizen) had no statistically significant effect on Putin’s approval. In the May data set, entrepreneurs had a negative statistically significant effect on Putin’s approval. This can be observed as the likely implementation of harsher sanctions on entrepreneurs’ foreign businesses due to the annexation of Crimea.
To conclude it can be observed that there is data to support all three hypotheses. Requiring further data to isolate a plethora of confounding variables that have influenced Putin’s overall increase in approval ratings
January Approval summary
# results='asis'
# Divide by 10000 so that I may present data
data_jan$income2 = (data_jan$income/10000)
data_may$income2 = (data_may$income/10000)
# Summary of Jan
sum_jan = as.data.frame(dplyr::select(data_jan, c("putinapprov", "income2", "married", "not_rgstrd", "college", "univ", "int_news", "age",)))
# Summary of May
sum_may = as.data.frame(dplyr::select(data_may, c("putinapprov", "income2", "married", "not_rgstrd", "college", "univ", "int_news", "age")))
# sum_jan %>%
# knitr::kable(caption = "Summary Approval January", digts = 2)
stargazer(sum_jan,
type = 'html', header = F,
covariate.labels = c("Putin Apporval", "Income", "Married",
"Single", "College Educated",
"Uni Educated", "Online News", "Age"))| Statistic | N | Mean | St. Dev. | Min | Max |
| Putin Apporval | 1,584 | 0.677 | 0.468 | 0 | 1 |
| Income | 1,312 | 3.301 | 2.263 | 0.080 | 16.500 |
| Married | 1,603 | 0.600 | 0.490 | 0 | 1 |
| Single | 1,603 | 0.066 | 0.247 | 0 | 1 |
| College Educated | 1,603 | 0.386 | 0.487 | 0 | 1 |
| Uni Educated | 1,603 | 0.319 | 0.466 | 0 | 1 |
| Online News | 1,603 | 0.291 | 0.454 | 0 | 1 |
| Age | 1,603 | 44.354 | 16.806 | 18 | 89 |
# stargazer(sum_jan, type = 'html', header = F)
# Explain how variables are balanced
# I divided by 10000 for the ease of interpretationMay Approval Summary
stargazer(sum_may,
type = 'html', header = F,
covariate.labels = c("Putin Apporval", "Income",
"Married", "Single", "College Educated",
"Uni Educated", "Online News",
"Age"))| Statistic | N | Mean | St. Dev. | Min | Max |
| Putin Apporval | 1,587 | 0.861 | 0.346 | 0 | 1 |
| Income | 1,287 | 3.757 | 2.535 | 0.400 | 20.000 |
| Married | 1,600 | 0.614 | 0.487 | 0 | 1 |
| Single | 1,600 | 0.055 | 0.228 | 0 | 1 |
| College Educated | 1,600 | 0.388 | 0.487 | 0 | 1 |
| Uni Educated | 1,600 | 0.291 | 0.454 | 0 | 1 |
| Online News | 1,600 | 0.329 | 0.470 | 0 | 1 |
| Age | 1,600 | 44.316 | 16.433 | 18 | 90 |
# results='asis'
# Explain how variables are balanced
# I divided by 10000 for the ease of interpretationIt can be observed that the independent variables (marital status, income, age, education, and internet news) with Putin’s approval ratings between the January data set and the May data set are balanced, as there are only minor incremental changes. Therefore, it can be confidently said that of the people who approved of Putin in January, 60% of them were married, 6.6% were single, 38.6% have a college degree when compared to high school-only educated people, 31.9% have a university degree when compared to high school-only educated people, 29.1% were influenced by the news, the average age of the people who approved of Putin was 44 years old, and their average income was around 33,000 RUB (Russian Rouble). In May, these numbers did not change much besides for income, which increased to 37,000 roubles, therefore allowing for the assertion that they are balanced. To further clarify, I have divided the variable income by 10,000 for readability.
g = dagitty("dag{
NEWS -> PUTIN
INCOME -> NEWS
INCOME -> PUTIN
}")
coordinates(g) = list(x = c(NEWS = 0, PUTIN = 1, INCOME = 0),
y = c(NEWS = 0, PUTIN = 0, INCOME = 1))
plot(g)
After further research, it can be understood that income may act as a confounding variable that plays a role in not only in Putin’s approval rating, your occupation, but also each independent variable (age, education, and marital status), especially news. I recognize income as a confounding variable because of its effect on an individual’s (i.e. Russian citizen’s) ability to participate not only in politics but also in day-to-day activities. If you are on the lower end of the SES scale, it will change the way you interpret or use all kinds of media.